package frame;

/**
 * FPSの計測クラス
 *
 * @author function
 */
public class CalculateFPS
{
	/** フレームカウント */
	private int m_frameCount;

	/** FPS算出時間 */
	private long m_fpsCalculateTime;

	/** FPS */
	private int	 m_FPS;

	/**
	 * コンストラクタ
	 */
	public CalculateFPS()
	{
		m_frameCount = 0;
		m_fpsCalculateTime = System.currentTimeMillis();
	}

	/**
	 * 更新（FPSの計測）
	 */
	public void update()
	{
		m_frameCount += 1;

		// 1秒以上経過していたらカウンターのリセット
		if( isTimeOver() )
		{
			// FPSの更新
			m_FPS = m_frameCount;

			// カウンターリセット
			m_frameCount = 0;

			// 計測時間リセット
			m_fpsCalculateTime = System.currentTimeMillis();
		}
	}

	/**
	 * FPSの取得
	 *
	 * @return　FPS
	 */
	public int getFPS()
	{
		return m_FPS;
	}

	/**
	 * 1秒以上経過しているか
	 *
	 * @return
	 */
	private boolean isTimeOver()
	{
		return ( System.currentTimeMillis() - m_fpsCalculateTime ) >= 1000;
	}
}